iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Python

在AWS上進行物聯網與人工智慧實作系列 第 14

D14-網際網路模型

  • 分享至 

  • xImage
  •  

網際網路模型

目錄

在進行物聯網與雲端計算互動之前,必須要先了解網際網路的基礎概念,平時使用者的操作是透過圖形界面與雲端計算進行互動,但當操作的對象是物聯網裝置時,程式開發人員必須要把與雲端計算溝通的內容直接撰寫在物聯網設備上,並將資料透過網際網路傳送到雲端,所以在這裡我們要討論兩個常見的網際網路模型。

網際網路模型會將網路的架構定義為數層服務,每一層皆定義了該層服務所使用的協定(Protocol),用來跟網路的另一端設備進行溝通,而對方也使用相同的協定,這是所謂的對等通訊(peer-to-peer);協定則是清楚的定義該層應有的服務,同時也必須考慮與上層/下層的協定溝通,這種堆疊式的多層模型稱為協定堆疊(protocol stack)。

開放系統互連(OSI)參考模型

開放式系統互連 (OSI) 模型是由國際標準組織和其他組織於 1970 年代末開發的。其首版於 1984 年以 ISO 7498 版本出版,而目前的版本則是 ISO/IEC 7498-1:1994。以下是開放系統互連(OSI)模型各層協定的負責內容:

  • 實體層:此層為最低層,定義傳輸媒介的機械、電氣、功能與程序特性。
  • 資料連結層:提供實際連結之間可靠的資訊傳輸服務,包含同步、錯誤控制及流量控制。
  • 網路層:負責網路建立、維護、結束(終止)連接及路徑選擇等功能。
  • 傳輸層:提供端至端間 (end-to-end)可靠又透通的資料傳服務,包括提供端點間錯誤回復與流量控制。
  • 交談層:提供兩應用程式之間的交談建立、管理及終止。
  • 表現層:提供應用層不同資料表示方式,例如資料框的語法、格式與語意、資料壓縮、加密轉換等。
  • 應用層:主要功能是提供網路服務給用戶,例如檔案傳送、電子郵件等服務。

TCP/IP 協定組

TCP/IP Protocol Suite
TCP/IP 協定組(TCP/IP Protocol Suite或TCP/IP Protocols),由於在網路通訊協定普遍採用分層的結構,當多個層次的協定共同工作時,又稱為TCP/IP協定堆疊(TCP/IP Protocol Stack)。這些協定最早發源於美國國防部(Department of Defense,DoD)的ARPA網專案,因此也稱作DoD模型(DoD Model)。

TCP/IP 協定組各層協定的負責內容:

  • 應用層(application layer):主要負責進行實際應用面的工作,例如:
    • FTP : 用於檔案傳輸
    • SMTP/POP3 : 用於收發電子郵件
    • HTTP : 用於網頁瀏覽與訪問例如
  • 傳輸層(transport layer):負責將資料傳送到目的地。例如TCP、UDP、RTP、SCTP等協定。
  • 網路層(internet layer):負責找出傳輸路徑,進行的工作有定址、選擇傳送路徑,如網際網路協定(IP)。
  • 連結層(link layer):負責將資料透過有線或無線的方式送到另一個設備,如媒體存取控制方法 (Media Access Control Method, MAC Method)

DoD模型每層大致可對應至OSI模型的七層,如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20240821/20129510RCn9I3Cfy0.png
圖 1. TCP/IP 協定組與 OSI 模型的對應

模型
應用層主要負責支撐整個網路的應用及服務,例如最典型的應用就屬全球資訊網(World Wide Web;WWW)
傳輸層主要提供在不同主機上執行應用程式之間的邏輯通訊。
發送端會將應用層的訊息加上標頭,形成區段,也是所謂的傳輸層的封包。
IP層將處理來自傳輸層的TCP/UDP區段,並將區段(必要時要先對區段做分割)放入IP封包內的資料欄位(稱為Payload),再加上標頭(其中含有目的端位址)後,選擇前往目的端的路徑。
網路層會將IP封包下傳給數據鏈路層,並沿著所選擇的路徑將該封包送至下一節點;在另一端,資料連結層會將所接收的IP封包再傳給其上層(即網路層)。

網際網路的運作

從上面兩個模型中,可以看出,在網際網路的運作裡:透過模型規劃出大框架,每個模型(Model)裡有數個不同的協定(Protocol),上下層之間的協定與協定透過「封裝(encapsulation)」與「解封裝(decapsulaion)」來交換資料,而不同主機的同一個協定則是透過協定資料單元(Protocol Data Unit, PDU)或是封包(Packet),來交換資料,而PDU裡面的資料主要是換分為表頭(Header)與負載(Payload)。
而不同的 PDU 所對應的名稱,在分別為 TCP/IP Protocols 分別如下:

TCP/IP Protocols PDU名稱
應用程式層 訊息(message)
傳輸層 區段(segment)
網路層 資料包(datagram)
資料連結層 訊框(frame)

下圖說明在網際網路上兩個系統 A 與 B 互相溝通資料時,資料是如何被傳送的,在上圖中,在不同層協定溝通時,交換的資料封包會有不同的名稱,比方說在應用程式層的封包也可以稱為訊息(message),而在傳輸層的封包則稱為區段(segment)。而當在主機 A 的系統 A 要將資料傳送給在主機 B 的系統 B 時,主機 A 需要先將資料依照不同層的協定,層層封裝,轉換成電子訊號或是光學訊號發送出去,而主機 B 收到訊號後再透過層層的解封裝,最後將資料交給系統 B。通常來說,使用者開發的系統(A或B)是不需要管理下層協定的,但是有時因為一些效能上或是可靠度的考量,也是需要涵蓋下層協定。

https://ithelp.ithome.com.tw/upload/images/20240821/20129510SqQEywTxvc.png
圖 2. 網際網路資料交換說明

參考資料

  • 什麼是 OSI 模型?,https://aws.amazon.com/tw/what-is/osi-model/
  • 網際網路協議套組,https://zh.wikipedia.org/zh-tw/TCP/IP%E5%8D%8F%E8%AE%AE%E6%97%8F

上一篇
D13-使用 MicroPython 拍照-ESP32-CAM
下一篇
D15-HTTP 請求/回應格式
系列文
在AWS上進行物聯網與人工智慧實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言